﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Northwind.Domain;

namespace Ex01
{
    class Program
    {
        static void Main(string[] args)
        {
            //添加
            //方法1：可以通过调用DbSet上的Add方法将已有实体添加到上下文中,同时将实体置于Added状态
            //，这意味着它将在下次调用SaveChanges时插入到数据库中。
            //using (var context = new NorthwindDbContext())
            //{
            //    var product = new Product { ID = 1000, Description = "篮球", Discontinued = true, LastSale = DateTime.Now };
            //    context.Products.Add(product);
            //    context.SaveChanges();
            //}
            //方法2：将新实体添加到上下文的另一种方式是将其状态更改为已添加。
            //using (var context = new NorthwindDbContext())
            //{
            //    var product = new Product { ID = 1001, Description = "足球1", Discontinued = true, LastSale = DateTime.Now };
            //    context.Products.Attach(product);
            //    context.Entry<Product>(product).State = EntityState.Added;
            //    context.SaveChanges();
            //}
            //方法3：可以通过调用DbSet上的Add方法将新实体添加到上下文中,同时将实体置于Added状态
            //，这意味着它将在下次调用SaveChanges时插入到数据库中
            //using (var context = new NorthwindDbContext())
            //{
            //    context.Products.Add(new Product {Description = "足球2", Discontinued = true, LastSale = DateTime.Now});
            //    context.SaveChanges();
            //}

            //方法4：您可以通过将一个新实体挂接到已经被跟踪的另一个实体来向该上下文添加一个新实体。
            //这可以通过将新实体添加到另一实体的集合导航属性，或者通过将另一实体的引用导航属性设置为指向新实体。例如：
            using (var context = new NorthwindDbContext())
            {
                var customer = context.Customers.Find(1);
                var purchase = new Purchase { Description = "足球", Price = 12m, Date = DateTime.Now};
                customer.Purchases.Add(purchase);
                context.SaveChanges();
            }
            Console.ReadKey();
        }
    }
}
